// HEAD YieldCurve_BondDataStructure H
/*==================================================================================================================
                  Copyright (C) 2013 SUMSCOPE L.P.
                  ALL RIGHTS RESERVED 
====================================================================================================================
File description:
    Define structures for data transferring between UI and Yield Curve
====================================================================================================================
...Date      Name                                  Description of Change
25-Apr-2013  James Xu                              Initial version
27-Apr-2013  James Xu                              Add YCPoint
07-May-2013  James Xu                              Define invalid quotes to 0.0 and remove YCPoint struct
12-May-2013  James Xu                              Move YieldCurveType definitions from RateBondAnalysis.h here
13-May-2013  James Xu                              Add InterpolatedMethodType
14-May-2013  James Xu                              Add YieldCurveSubType
$HISTORY$
===================================================================================================================*/

#ifndef YC_BOND_DATA_STRUCTURE_H
#define YC_BOND_DATA_STRUCTURE_H

#include <string>

namespace YieldCurve
{
    struct YCInfo
    {
        std::string  bondType;      // 债券类型：GOV，FIN等。
        int          maturityDate;  // 债券到期日:yyyymmdd
        std::string  source;        // {"TPSC", "CFIC", "CBBG"}
        std::string  bondKey;       // Bond key
        int          type;          // 0-市场报价点  1-固定点
        double       bestBid;       // 最优bid, 如果没有bid, 则bestBid = 0.0
        double       bestOfr;       // 最优ofr, 如果没有ofr, 则bestOfr = 0.0;
    };

    struct YCPoint
    {
        double       maturity;       // 剩余期限
        double       yield;          // 收益率
    };

    enum YieldCurveType 
    {
        GOV_BOND    = 0,    // 国债
        FIN_BOND    = 1,    // 金融债
        CREDIT_BOND = 2     // 信用债
    };

    enum YieldCurveSubType 
    {
        NONE        = 0,    // 国债，金融债没有评级
        AAA_PLUS    = 1,    // AAA+
        AAA         = 2,    // AAA
        AA_PLUS     = 3,    // AA+
        AA          = 4     // AA
    };

    enum InterpolatedMethodType 
    {
        HERMITE              = 0, // Hermite
        LOCAL_LINEAR_HERMITE = 1  // Local linear + Hermite
    };

}

#endif